山不轉路轉,路不轉......人轉總可以吧,
一定要count來玩嗎?
網路上有一篇提問,問這種統計表格
< http://www.blueshop.com.tw/board/FUM200410061527578K1/BRD20130720105258TBZ.html >
KIND BOOK S F
---------- ---------------------------------- - -
小說 笑傲江湖 Y --(這裡有空值NULL)
小說 鹿鼎記 Y N
小說 碧血劍 Y N
小說 書劍恩仇錄 Y N
KIND BOOK STATUS FAVORITE
---------- --------- --------- ---------
小說 4 3 1
這是個採用select case的作法
我舉個分享是想提醒,有時候非一定要用count不可!
select KIND , substrb(book, 1, 40) BOOK , STATUS , FAVORITE
from ithelp_book_records
KIND BOOK S F
---------- ---------------------------------- - -
小說 笑傲江湖 Y --(這裡有空值NULL)
小說 鹿鼎記 Y N
小說 碧血劍 Y N
小說 書劍恩仇錄 Y N
運用count的作法
select KIND , count(book) BOOK , count(status) STATUS , count(FAVORITE ) FAVORITE
from ithelp_book_records
group by kind
--NULL Count是不記的,但第三個會錯誤
KIND BOOK STATUS FAVORITE
---------- --------- --------- ---------
小說 4 3 4
目標是
KIND BOOK STATUS FAVORITE
---------- --------- --------- ---------
小說 4 3 1
這裡要講的是,為何一定要用count,
試試這個
select KIND ,
count(book) BOOK ,
sum(decode(status , 'Y', 1, 0)) STATUS ,
sum(decode(FAVORITE, 'Y', 1, 0)) FAVORITE
from ithelp_book_records
group by kind
KIND BOOK STATUS FAVORITE
---------- --------- --------- ---------
小說 4 3 1
有時候,並非一定要用已知的,換個角度思考,答案就出來了。
[開發技術組]全文閱讀
http://ithelp.ithome.com.tw/ironman6/player/yafuu168/dev/1
[鐵人人生組]全文閱讀
http://ithelp.ithome.com.tw/ironman6/player/yafuu168/life/1